home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / PASCAL / 0195.ZIP / QUEUE.LIB < prev    next >
Text File  |  1984-12-03  |  2KB  |  45 lines

  1. {@@@@@@@@@@@ copyright (C) 1984 by Neil J. Rubenking @@@@@@@@@@@@@@@@@@@@@@@@
  2. The purchaser of these procedures and functions may include them in COMPILED
  3. programs freely, but may not sell or give away the source text.
  4.  
  5.   THIS is a kind of template for a generic QUEUE (First In, First Out).
  6.   You probably won`t $INCLUDE it in a program, but it's handy to have
  7.   it for reference on disk.
  8. }
  9.  
  10. type
  11.   ListType = ^node;
  12.   node     = record
  13.                AnItem : ItemType;
  14.                next   : ListType;
  15.              end;
  16. {@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@}
  17. procedure AddItem(ItemToAdd:ItemType; VAR ItemList, EndPointer : ListType);
  18. begin
  19.   if ItemList = nil then
  20.     begin                                     { You MUST declare the type   }
  21.       new(ItemList);                          { "ItemType" in your program. }
  22.       ItemList^.AnItem := ItemToAdd;          { It can be anything.         }
  23.       ItemList^.next   := nil;
  24.       EndPointer       := ItemList;
  25.     end
  26.   else
  27.     begin
  28.       new(EndPointer^.next);
  29.       EndPointer := EndPointer^.next;
  30.       EndPointer^.AnItem := ItemToAdd;
  31.       EndPointer^.next    := nil;
  32.     end;
  33. end;
  34. {@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@}
  35. procedure DisposeAll(VAR ItemList : ListType); { A queue or other linked     }
  36. var                                            { continues to take up space  }
  37.   tempPointer : ListType;                      { in memory until you dispose }
  38. begin                                          { of it.  You have to get rid }
  39.   while ItemList <> nil do                     { of it carefully, without    }
  40.     begin                                      { losing track of it!         }
  41.       tempPointer := ItemList;
  42.       ItemList := ItemList^.next;
  43.       dispose(tempPointer);
  44.     end;
  45. end;